<?php
namespace app\admin\model;

use houdunwang\arr\Arr;
use think\Loader;
use think\Model;
use think\Validate;

class Category extends Model
{
    //设置当前模型对应的主键
    protected $pk = 'cate_id';
    //设置当前模型对应的完整数据表名称
    protected $table = 'tp_cate';

    /**
     *获取分类数据(树状结构)
     */
     public function getAll(){

         //获取分类数据信息
         $arr = db('cate')->select();
         $data = getTree($arr,0,0);
         //halt($data);
         return $data;

     }


    /**
     *添加栏目
     */
    public function store($data){

         //1、建立数据验证(验证器)
        // 调用当前模型对应的Category验证器类进行数据验证
        $result = $this->validate(true)->save($data);
        if(false === $result){
            // 验证失败 输出错误信息
            return ['valid'=>0,'msg'=>$this->getError()];
        }else{

            return ['valid'=>1,'msg'=>'添加成功'];
        }



    }


    /**
     *处理所属分类
     */
    public function getcateDate($cate_id){

        //1、首先找到$cate_id的子集
        $cate_ids = $this->getSon(db('cate')->select(),$cate_id);
        //2、把自己追加进去
        $cate_ids[] = $cate_id;
        //halt($cate_ids);
        //3、查询出除了子集与自己之外的数据，并且生成树状
        $cateDate = $this->whereNotIn('cate_id',$cate_ids)->select();
        //halt($cateDate);
         return getTree($cateDate,0,0);
    }

    /**
     *找子集
     */
    public function getSon($data,$cate_id){

        foreach($data as $v){
            static $temp= array();
            if($cate_id == $v['cate_pid']){

                $temp[] = $v['cate_id'];

                $this->getSon($data,$v['cate_id']);
            }
        }

        return $temp;
    }

    /**
     *编辑栏目
     */
    public function editcol($data){

        $result = $this->validate(true)->save($data,[$this->pk=>$data['cate_id']]);

        if($result){

            return ['valid'=>1,'msg'=>'修改成功'];
        }else{

            return ['valid'=>0,'msg'=>$this->getError()];
        }


    }


    /**
     *删除栏目
     */
    public function  cutouts($cate_id){

        if($cate_id){
            //1、找到该栏目的子集
            $cate_ids = $this->getSon(db('cate')->select(),$cate_id);
            //2、把自己也追加进去
            $cate_ids[] = $cate_id;
            //halt($cate_ids);
            $cate = $this->whereIn('cate_id',$cate_ids)->delete();
            if($cate){

                return ['valid'=>1,'msg'=>'删除成功'];
            }else{

                return ['valid'=>0,'msg'=>'删除失败'];
            }
           // echo '<pre>';
          //  var_dump($cate);
        }

    }





}